package ml.ml.Clases;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import org.apache.commons.lang.ObjectUtils;
import org.easycassandra.annotations.Index;

import ml.ml.Dao.PublicacionDAO;
import ml.ml.Dao.TransaccionistaDAO;

@Entity(name = "publicaciones")
public class Publicacion {
	
	@Id
	private String codigoPublicacion;
	
	@Column(name = "usrid")
	private String usrid;
	
	@Index
	@Column(name = "nombreprd")
	private String nombreprd;
	
	@Column(name = "precioprd")
	private String precioPrd;
	
	@Column(name = "usrcomprador")
	private String usrcomprador;
	
	public String getUsrcomprador() {
		return usrcomprador;
	}

	public void setUsrcomprador(String usrcomprador) {
		this.usrcomprador = usrcomprador;
	}

	@Column(name = "comentarios")
	private CassandraList<String> comentarios =  new CassandraList<String>();
	
	public Publicacion(){
		
	}
	
	
	public Publicacion(String codigoPub, String nombrePrd, String precioPrd, String usrid) {
		this.codigoPublicacion = codigoPub;
		this.nombreprd = nombrePrd;
		this.precioPrd = precioPrd;
		this.usrid = usrid;
		PublicacionDAO.getInstance().create(this);
	}
	
	public String getCodigoPublicacion() {
		return codigoPublicacion;
	}
	
	public void setCodigoPublicacion(String codigoPublicacion) {
		this.codigoPublicacion = codigoPublicacion;
	}
	
	public String getUsrid() {
		return usrid;
	}
	public void setUsrid(String usrid) {
		this.usrid = usrid;
	}
	public String getNombreprd() {
		return nombreprd;
	}
	public void setNombreprd(String nombrePrd) {
		this.nombreprd = nombrePrd;
	}
	public String getPrecioPrd() {
		return precioPrd;
	}
	public void setPrecioPrd(String precioPrd) {
		this.precioPrd = precioPrd;
	}
	
	public CassandraList<String> getComentarios() {
		return comentarios;
	}


	public void setComentarios(CassandraList<String> comentarios) {
		this.comentarios = comentarios;
	}


	public void agregarPregunta(String codcom, String comentario){
		Publicacion pub = PublicacionDAO.getInstance().retrieve(this.getCodigoPublicacion());
		pub.getComentarios().add(new Comentario(codcom, comentario).toString());
		PublicacionDAO.getInstance().update(pub);	
	}

	@Override
	public String toString() {
		return this.codigoPublicacion;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((nombreprd == null) ? 0 : nombreprd.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Publicacion other = (Publicacion) obj;
		if (nombreprd == null) {
			if (other.nombreprd != null)
				return false;
		} else if (!nombreprd.equals(other.nombreprd))
			return false;
		return true;
	}
	
	
    


}
